Skip to content
c++
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N=2e5+5;
const ll mod=19930726;

std::string toManacherss(const std::string& s){
    std::string res;res.reserve(2*s.size()+3);
    res="@#";for(int i=0;i<(int)s.size();i++)res+=s[i],res+='#';
    res+='$';
    return res;
}

std::vector<int> Manacher(const std::string& s){
    auto t=toManacherss(s);
    std::vector<int>p(t.size());
    for(int i=1,r=0,c=0;i<t.size()-1;i++){
        p[i]=(r>i?std::min(p[2*c-i],r-i):1);
        while(t[i-p[i]]==t[i+p[i]])++p[i];
        if(i+p[i]>r)r=i+p[i],c=i;
    }
    return p;
}
ll qpow(ll a,ll b){
    ll res=1;
    for(;b;b>>=1,a=a*a%mod)if(b&1)res=res*a%mod;
    return res;
}
void fc() {
    ll n,k;
    std::string s;
    std::cin>>n>>k>>s;
    ll ans=1;

    auto p=Manacher(s);
    int mx=0;
    std::vector<ll>cnt(n+2);

    for(int x:p){
        if(x<=1)continue;
        cnt[x-1]++;mx=std::max(mx,x-1);

    }

    for(int i=mx-2;i>0;i--){
        cnt[i]+=cnt[i+2];
    }

    for(int i=(mx&1?mx:mx-1);i>0&&k;i-=2){
        ll cn=std::min(k,cnt[i]);
        k-=cn;
        ans=ans*qpow(i,cn)%mod;
    }
    std::cout<<(k?-1:ans);
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t = 1;
    // std::cin>>t;
    while (t--) fc();
    return 0;
}